package yh.design.strategy;

import yh.design.common.res.APIResult;

import java.math.BigDecimal;

/**
 * 交易领域中的 支付
 *
 * @author: zyh
 * @date: 2025/5/15 11:00
 **/
public interface IPayment<T> {


    /**
     * 支付方法
     * 这里使用范型传参，方便方法参数扩展
     * @param payInfo   支付对象
     * @param payAmount 支付金额
     * @return
     */
    APIResult executePay(T payInfo, BigDecimal payAmount);


    // 统一定义 PayInfoReq 对象的话，可能随着业务扩展，PayInfoReq中的传参字段越来越多
    //但是在不同的支付方式中，如现金支付业务，可能只需要部分字段
    // APIResult executePay(PayInfoReq payInfoReq);

}
